#ifndef _KCMATH_H_

#define _KCMATH_H_

/*
作    者：	王清
创建时间:	2017-04-26
说    明：	kc工具集的数学操作
*/

/*

王清	2017-04-26	新建文件

*/

/*

kcMath文件结构

kcMath

	|------矩阵类

	|------复数类

	|------大数类:KCInt，KCDouble

	|------随机数类

	|------加密类

	|------计算类:静态op

*/

#include<vector>


namespace kc {

	/*

	矩阵类: 二维数组实现m*n的矩阵，动态开辟内存作为存储单元

	范型，即每一个矩阵元素的值都是不确定类型

	*/
	class KCMatrix {
	public:
		KCMatrix(unsigned row = 0, unsigned column = 0) :_row(row), _column(column) {

		}
		void set_row(unsigned);
		unsigned get_row();
		void set_column(unsigned);
		unsigned get_column();
		const KCMatrix operator+(const KCMatrix&);					//重载+
		const KCMatrix operator-(const KCMatrix&);					//重载-
		const KCMatrix operator*(const KCMatrix&);					//重载*
		const KCMatrix operator/(const KCMatrix&);					//重载/
		const KCMatrix& operator+=(const KCMatrix&);					//重载+=
		const KCMatrix& operator-=(const KCMatrix&);					//重载-=
		const KCMatrix& operator*=(const KCMatrix&);				//重载*=
		const KCMatrix& operator/=(const KCMatrix&);				//重载/=
		friend std::ostream& operator<<(std::ostream&, KCMatrix&);		//重载输出流<<
		friend std::istream& operator>>(std::istream&, KCMatrix&);				//重载输入流>>
		const double det(const KCMatrix&);                        //计算行列式的值
		const KCMatrix trans(const KCMatrix&);                    //计算转置矩阵
		const KCMatrix inverse(const KCMatrix&);                  //计算逆矩阵 
	private:
		unsigned _row;		//行
		unsigned _column;	//列
		double *M_data = new double[_row*_column];
		//创建_row行,_column列的动态内存区域及全部赋值为0

	};

	class KCComplex {};
	class KCRandom {};
	class KCInt {};
	class KCDouble {};
	class KCCalculation {};


}


#endif